package com.dkm.orproject.dkmoa.service.serviceimpl;

import com.dkm.orproject.dkmoa.dao.OaCarMapper;
import com.dkm.orproject.dkmoa.domain.OaCar;
import com.dkm.orproject.dkmoa.domain.OaPersonnel;
import com.dkm.orproject.dkmoa.service.OaCarService;
import com.dkm.orproject.utils.utils.IdToobtainUtils;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * @ClassName : OaCarServiceImpl  //类名
 * @Description : 车辆服务接口实现类  //描述
 * @Author : 易嵘  //作者
 * @Date: 2021-01-20 09:27  //时间
 */
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class OaCarServiceImpl implements OaCarService {

    /**
     * 车辆管理mapper
     */
    @Resource
    OaCarMapper carMapper;

    /**
     * id生成
     */
    @Resource
    IdToobtainUtils idToobtainUtils;

    /**
     * 分页查询所有
     * @param carName 车辆名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 当前页数
     * @param limit 显示行数
     * @return 查询结果
     */
    @Override
    public List<OaCar> findAll(String carName, String startTime, String endTime, Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        return carMapper.findAll(carName,startTime,endTime);
    }

    /**
     *  总行数
     * @param carName 车辆名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 总行数
     */
    @Override
    public Long rowCount(String carName, String startTime, String endTime) {
        return carMapper.rowCount(carName,startTime,endTime);
    }

    /**
     * id查询
     * @param id 车辆id
     * @return 车辆信息
     */
    @Override
    public OaCar selectByPrimaryKey(Long id) {
        return carMapper.selectByPrimaryKey(id);
    }

    /**
     * 车辆新增
     * @param car 车辆信息
     * @param personnel 录入人
     * @return 回调函数
     */
    @Override
    public int add(OaCar car, OaPersonnel personnel) {
        car.setPkCarId(idToobtainUtils.getNumberId());
        car.setCreatedBy(personnel.getPersonnelName());
        car.setIsRevision("1");
        return carMapper.insertSelective(car);
    }

    /**
     * 车辆修改
     * @param car 更新后车辆信息
     * @return 回调函数
     */
    @Override
    public int updateByPrimaryKeySelective(OaCar car) {
        return carMapper.updateByPrimaryKeySelective(car);
    }

    /**
     * 批量id查询
     * @param list 车辆id集合
     * @return 车辆信息集合
     */
    @Override
    public List<OaCar> selectAll(List<Long> list) {
        return carMapper.selectAll(list);
    }

    /**
     * 批量id删除
     * @param list 车辆id集合
     * @return 回调函数
     */
    @Override
    public int deleteAll(List<Long> list) {
        return carMapper.deleteAll(list);
    }

    /**
     * id删除
     * @param id 车辆id
     * @return 回调函数
     */
    @Override
    public int deleteByPrimaryKey(Long id) {
        return carMapper.deleteByPrimaryKey(id);
    }
}
